home *** CD-ROM | disk | FTP | other *** search
/ SPACE 1 / SPACE - Library 1 - Volume 1.iso / apps / 439 / draw3 / draw3.txt < prev   
Text File  |  1990-11-30  |  4KB  |  90 lines

  1. Screen Drawing Program (Part III)
  2.  
  3. Ed Smith (SPACE)
  4.  
  5. In this version of the Screen Drawing Program, a new option has been added to
  6. permit selecting a drawing brush. Four types of brushes are provided: a solid
  7. circle, an empty circle (no fill), a solid square and an empty square. In
  8. order to allow use of this option, a fifth box labeled "Brsh" had to be added.
  9. This 'point and click' box was done in a similar manner as the first four
  10. boxes. That is:
  11.  
  12. A. Define xy locations as Xbrsh% and Ybrsh% (the 'Brsh' box).
  13.  
  14. B. Insert an IF statement in the DO-LOOP that compares mousex and mousey
  15. coordinates with those of the 'Brsh' box.
  16.  
  17. C. When 'Brsh' box is entered and sensed by the IF statement and the left
  18. button is pressed, the programming steps are then specified to perform the
  19. desired function.
  20.  
  21. This desired function, in summary, is to provide a means for the user to
  22. select a brush style and set the size of the brush. The following procedures
  23. are performed:
  24.  
  25. A. Highlight the 'Brsh' box to notify the user that the box was selected via a
  26. point and click with the mouse. See instruction: Put Xbrsh%,YBrsh%,X4$,6.
  27.  
  28. B. Since a portion of the screen will be needed to interact with the user, the
  29. portion used is saved in the string Y$ by using the Get instruction. The saved
  30. screen will contain a portion of the drawing, so we want to be able to
  31. retrieve it after selecting the desired brush and size. See instruction: Get
  32. Xbr%,Ybr%,Xbr%+Wbr%,Ybr%+Hbr%,Y$.
  33.  
  34. C. Replace the screen with a blank area in order to provide instructions,
  35. brushes, and 'Size' boxes for user interaction. See instruction: Put
  36. Xbr%,Ybr%,Blank$.
  37.  
  38. D. Set the color and draw a fancy border around the user interactive area. See
  39. instructions: Deffill C%, Color C%, Box Xbr%,Ybr%,Xbr%+Wbr%,Ybr%+Hbr% and Box
  40. Xbr%+4,Ybr%+4,Xbr%+Wbr%-4,Ybr%+Hbr%-4.
  41.  
  42. E. Now get the brush shape and size. This is described later.
  43.  
  44. F. Restore the screen. See instruction: Put Xbr%,Ybr%,Y$.
  45.  
  46. G. Unhighlight the 'Brsh' box. See instruction: Put Xbrsh%,Ybrsh%,X4$,6.
  47.  
  48. H. Return to picture drawing mode.
  49.  
  50. Referring to the Procedure Get_brush(C%), the user is asked to select a brush
  51. type and set the size of the brush. Line-by-line description follows:
  52.  
  53. A. The 'Gotbrush!' flag is set to 'False'. This means that when we arrive at
  54. this routine, we haven't yet selected a brush. Later on, we will exit a
  55. DO-LOOP when the 'Got_brush!' flag is set to 'True'.
  56.  
  57. B. Print user instructions.
  58.  
  59. C. Plot a solid circle, empty circle, solid box and an empty box. See
  60. instructions using Pcircle, Circle, Pbox and Box.
  61.  
  62. D. Establish four 'Size' boxes. See the instruction Ysize%=Ybr%+84 to set the
  63. distance from the top of the screen. The boxes are actually plotted using the
  64. FOR-NEXT loop. The horizontal x displacement is derived from the array Sx%().
  65. This array is initially filled when plotting the upper screen.
  66.  
  67. E. Print the color value and size above the drawn brush displays showing the
  68. solid and empty circles and boxes. The size number changes as the user
  69. repeatedly points and clicks on the particular 'Size' box. See instructions:
  70. I%=0, Circle2, I%=1, Circle2, I%=2, Square2, I%=3, Square2.
  71.  
  72. F. The user interacts in the DO-LOOP. Within the DO-LOOP I% is constantly
  73. incremented in the range of 0 to 3 back to 0 etc. This has the effect of the
  74. computer scanning all four 'Size' boxes, looking for a user interaction in the
  75. form of a point and click. When the IF statement confirms a user point and
  76. click action with the left mouse button pressed, the size value S% or R% is
  77. incremented in the range of 1 to 14 and back to 1 etc. S% controlls the size
  78. of the squares and R% controls the radius of the circles. If the 'point and
  79. click' action is the pressing of the right mouse button, the 'Gotbrush!' flag
  80. is set to 'True'. The Exit instruction senses the 'Gotbrush!' flag and returns
  81. to user draw mode.
  82.  
  83. I hope this program will help those who are learning GFA Basic. Happy
  84. Programming in GFA.
  85.  
  86. [Ed. Note: The type in GFA Basic source for this program appears below, but is
  87. also contained on the October 1990 ST/Mega Disk of the Month, along with the
  88. compiled version of this program.]
  89.  
  90.